// 使用class关键字定义一个类

/*
    类中主要包含两个部分
        - 属性：
        - 方法：

    使用static开头的属性是静态属性(类属性), 可以直接通过类去访问到
    readonly开头的属性表示一个只读的属性无法修改
*/
class Person {
  // 定义实例属性，什么叫实例？问得好，你new出来的就是实例
  name: string = "孙悟空";
  age: number = 18;

  //readonly可以让属性变为只可读不可赋值的
  readonly name2: string = "周杰伦";

  //   如果你想给类本身添加属性而不是未来的实例的话，需要加上static关键字
  static animalType = "人类";
  static readonly animalType2 = "人类啊啊啊";

  //   定义方法
  /*
        同样，如果方法的前面使用static关键字，那么方法会挂在类本身，可以直接通过类去调用
  */
  static sayHello() {}
}

const person = new Person();
console.log(person);
console.log(person.name2);
console.log(Person.animalType);

// person.name2 = '王力宏';//爆红，因为name2属性是只读的
